<?php
//
// Configuración global del sistema.
//
class ContextConfig
{
	/**
	 * Directorio principal de la aplicación.
	 *
	 * @var string
	 */
	public static $appRoot     = "src/com/gpan";

	/**
	 * Directorio principal de Sanavyron.
	 *
	 * @var string
	 */
	public static $contextRoot = "src/org/kondor/";

	/**
	 * Nombre del archivo Index que se cargará.
	 *
	 * @var string
	 */
	public static $indexFile   = "index.php";

	/**
	 * Clase principal del ORM. La aplicación le pasará como
	 * argumentos al constructor la clase de configuración,
	 * y el ClassLoader del contexto actual.
	 *
	 * @var class
	 */
	public static $ormLoaderClass = null;

	/**
	 * Nombre de la clase de configuración del modelo.
	 * Esta clase se le pasará como argumento al bean
	 * factory del ORM en uso.
	 *
	 * @var class
	 */
	public static $ormConfigClass = null;

	/**
	 * ClassLoader predeterminado para este contexto.
	 * Cuando el contexto esté inicializado, se podrá
	 * obtener la instancia del class loader global
	 * mediante este campo.
	 *
	 * @var class
	 */
	public static $classLoader = ClassLoader;

	/**
	 * Una vez cargado el contexto, contendrá la referencia
	 * al objeto que cargó este contexto.
	 *
	 * @var object
	 */
	public static $application = null;

	/**
	 * Clases de usuario que se cargarán al inicio del contexto.
	 * Estas clases deberán estar dentro de los directorios include.
	 *
	 * @var array
	 */
	public static $userLibs    = array (

	);

	/**
	 * Clases del sistema que se incluirán en el contexto actual.
	 * Dependiendo de las necesidades de la aplicación, en este
	 * campo podrán agregarse componentes específicos de Thorondor.
	 *
	 * @var array
	 */
	public static $contextLibs = array (

	);

	/**
	 * Directorios de includes. Todas las clases cargadas
	 * con el class loader del contexto, deberán encontrarse
	 * en los directorios definidos en este campo. Pueden
	 * definirse tantos directorios como sea necesario.
	 *
	 * @var array
	 */
	public static $includePath = array (

	);

	/**
	 * Directorio de uploads, relativo al root de la aplicación.
	 *
	 * @var string
	 */
	public static $uploadDir = "";

	/**
	 * Descripciones predefinidas para los distintos
	 * tipos de excepciones. Deberá especificarse por
	 * pares NombreDeExcepcion => "Descripción"
	 *
	 * @var array
	 */
	public static $exceptions = array (
		LibMissingException 		=> "No se encontró la librería especificada.",
		ServiceUnavailableException => "El servicio especificado no existe.",
		SQLException 				=> "Error en la consulta SQL.",
		UnhandledException 			=> "Error desconocido."
	);

	/**
	 * Tipo de request.
	 *
	 * @var string
	 */
	const REQUEST_METHOD = "get";

	/**
	 * Servicio predeterminado. Será llamado
	 * en caso de no haberse especificado datos.
	 *
	 * @var string
	 */
	const DEFAULT_SERVICE = null;

	/**
	 * Nombre del parámetro del request que
	 * contendrá los datos de la llamada.
	 *
	 * @var string
	 */
	const PARAM_REQUEST = "rq";

	/**
	 * Nombre del parámetro que especificará la
	 * codificación que tendrá la petición.
	 *
	 * @var string
	 */
	const PARAM_ENCODING = "enc";


	/**
	 * Dominios que tendrán permitido el
	 * acceso a los servicios.
	 *
	 * @var array
	 */
	public static $allowedDomains = array(
		"localhost"
	);
}
?>
